Virtualization refers to techniques in which software-based virtual machines are created using underlying computer hardware resources. Such virtual machines are thus software constructs which share underlying hardware resources, such as processing and memory resources, but which are otherwise operated and utilized as separate, distinct computing platforms.
Using such virtualization technology, for example, a single computer may be enabled to provide two or more virtual machines, where each such virtual machine may be configured with a different operating system, a different set of available applications, and various other differences and configuration parameters. Moreover, it is possible to dynamically share or allocate the available hardware resources among the existing virtual machines running thereon, e.g., to create new virtual machines, destroy existing virtual machines, relocate a virtual machine from one hardware platform to another, or otherwise manage the deployment and use of virtual machines in a flexible manner. As a result, it is possible to provide a wide range of computing features and functions, in a manner which makes efficient and cost effective use of available hardware resources.
Further, when combined with networking techniques, virtualization technology provides for an ability to provide remote access to virtual machines, for the use thereof by consumers, employees, or other users. In such contexts, it is frequently necessary to provide a large number of such users with desired virtual machine resources, so that large quantities of available hardware resources also may be required in order to meet demands of the users of the various virtual machines.
When deploying hardware resources and associated virtual machines at such large scales, it may be difficult for owners, providers, or administrators to do so in a reliable, efficient, and cost-effective manner. Moreover, a number of virtual machines being deployed, as well as a number of resources assigned to each virtual machine, may change over time. As a result, failure to accurately assess and predict capacity requirements may result in an inability to provide a desired level of service to users of the virtual machines.